home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / OCEAuthDir.idl < prev    next >
Text File  |  1996-05-01  |  78KB  |  1,665 lines

  1. /*
  2.      File:        OCEAuthDir.idl
  3.  
  4.      Contains:    Apple Open Collaboration Environment Authentication Interfaces.
  5.  
  6.      Version:    Technology:    AOCE Toolbox 1.02
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __OCEAUTHDIR_IDL__
  19. #define __OCEAUTHDIR_IDL__
  20.  
  21. #include <somobj.idl>
  22. #include <somcls.idl>
  23.  
  24. #ifndef __APPLETALK_IDL__
  25. #include <AppleTalk.idl>
  26. #endif
  27. #ifndef __FILES_IDL__
  28. #include <Files.idl>
  29. #endif
  30. #ifndef __OSUTILS_IDL__
  31. #include <OSUtils.idl>
  32. #endif
  33. #ifndef __TYPES_IDL__
  34. #include <Types.idl>
  35. #endif
  36. #ifndef __OCE_IDL__
  37. #include <OCE.idl>
  38. #endif
  39.  
  40. #ifdef __SOMIDL__
  41.  
  42. #if FOR_SYSTEM7_ONLY
  43. /*****************************************************************************/
  44. /* Values of DirEnumChoices */
  45. typedef unsigned long            DirEnumChoices;
  46.  
  47. /* Values of DirSortOption */
  48. /* Values of DirSortDirection */
  49. /* Values of DirMatchWith */
  50. typedef octet                    DirMatchWith;                /* Substituted octet for unsigned char type */
  51.  
  52. /*
  53.   Access controls are implemented on three levels:
  54.  *      DNode, Record, and Attribute Type levels
  55.  *  Some access control bits apply to the container itself, and some apply to its contents.
  56.  *
  57.  *  The Catalog Toolbox supports six functions.  These calls are:
  58.  *  DSGetDNodeAccessControl : to get Access Controls at the DNode level
  59.  *    DSGetRecordAccessControl  : to get Access Controls at the record level
  60.  *  DSGetAttributeAccessControl : to get Access Privileges at the attribute type level
  61.  * 
  62.  *  The GetXXXAccessControl calls will return access control masks for various categories
  63.  *  of users.  Please refer to the access control document for a description of the
  64.  *  categories of users.  In general these are:
  65.  *      ThisRecordOwner         - means the identity of the record itself
  66.  *      Friends                  - means any one of the assigned friends for the record
  67.  *      AuthenticatedInDNode     - means any valid user that is an authenticated entity
  68.  *          in the DNode in which this record is located
  69.  *      AuthenticatedInDirectory - means any valid authenticated catalog user
  70.  *      Guest                      - means an unauthenticated user.
  71.  *  Bit masks for various permitted access controls are defined below.
  72.  *
  73.  *  GetXXXAccessControl calls will return access control masks for various categories of
  74.  *  users for this record. In addition they also return the level of access controls
  75.  *  that the user (who is making the GetXXXAccessControl call) has for the DNode,
  76.  *  record, or attribute type.
  77.  *
  78.  *  For records, the access control granted will be minimum of the DNode access
  79.  *  control and record access control masks.  For example, to add an attribute type to a
  80.  *  record, a user must have access control kCreateAttributeTypes at the record and
  81.  *  DNode levels.  Similarly, at the attribute type level, access controls will be the
  82.  *  minimum of the DNode, record, and attribute type access controls.
  83.  *
  84.  *  
  85. */
  86. /* access privileges bit numbers */
  87. /* Values of AccessMask */
  88. /*
  89.  
  90. kSupportsDNodeNumberBit:
  91. If this bit is set, a DNode can be referenced using DNodeNumbers. 
  92. RecordLocationInfo can be specified using DNodeNumber and PathName component can be nil. 
  93. If this bit is not set, a DNode can be referenced only by PathName to the DNode. In the 
  94. later case DNodeNumber component inside record location info must be set to zero.
  95.  
  96. kSupportsRecordCreationIDBit:
  97. If this bit is set, a record can be referenced by specifying CreationID 
  98. in most catalog manager calls. If this bit is not set recordName and recordType are 
  99. required in the recordID specification for all catalog manager calls.
  100.  
  101. kSupportsAttributeCreationIDBit:
  102. If this bit is set, an attribute value can be obtained by specifying it's 
  103. CreationID in Lookup call staring point and also can be used in operations 
  104. like DeleteAttributeValue and ChangeAttributeValue an Attribute can be 
  105. specified by AttributeType and CreationID.
  106.  
  107. *************************************************************************
  108. Implicit assumption with creationID's and dNodeNumbers are, when supported
  109. they are persistent and will preserved across boots and life of the system.
  110. *************************************************************************
  111.  
  112. Following three bits are for determining the sort order in enumeration.
  113. kSupportsMatchAllBit:
  114. If this bit is set, enumeration of all the records is supported
  115.  
  116. kSupportsBeginsWithBit:
  117. If this bit is set, enumeration of records matching prefix (e.g. Begin with abc)
  118. is supported
  119.  
  120. kSupportsExactMatchBit:
  121. If this bit is set, existence of a record matching exact matchNameString and recordType
  122. is supported.
  123.  
  124. kSupportsEndsWithBit:
  125. If this bit is set, enumeration of records matching suffix (e.g. end with abc)
  126. is supported.
  127.  
  128. kSupportsContainsBit:
  129. If this bit is set, enumeration of records containing a matchNameString (e.g. containing abc)
  130. is supported
  131.  
  132.  
  133. Implicit assumption in all these is, a record type can be specified either as one of the above or
  134. a type list(more then one) to match exact type.
  135. The Following four bits will indicate sort ordering in enumeration.
  136.  
  137. kSupportsOrderedEnumerationBit:
  138. If this bit is set, Enumerated records or in some order possibly in name order.
  139.  
  140. kCanSupportNameOrderBit:
  141. If this is set, catalog will support sortbyName option in Enumerate.
  142.  
  143. kCanSupportTypeOrderBit:
  144. If this bit is set, catalog will support sortbyType option in enumearte.
  145.  
  146. kSupportSortBackwardsBit:
  147. If this bit is set, catalog supports backward sorting.
  148.  
  149. kSupportIndexRatioBit:
  150. If this bit is set, it indicates that enumeration will return approximate position
  151. of a record (percentile) among all records.
  152.  
  153. kSupportsEnumerationContinueBit:
  154. If this bit is set, catalog supports enumeration continue.
  155.  
  156. kSupportsLookupContinueBit:
  157. If this bit is set, catalog supports lookup continue.
  158.  
  159. kSupportsEnumerateAttributeTypeContinueBit:
  160. If this bit is set, catalog supports EnumerateAttributeType continue.
  161.  
  162. kSupportsEnumeratePseudonymContinueBit:
  163. If this bit is set, catalog supports EnumeratePseudonym continue.
  164.  
  165. kSupportsAliasesBit:
  166. If this bit is set, catalog supports create/delte/enumerate 
  167. of Alias Records.
  168.  
  169. kSupportPseudonymBit: 
  170. If this bit is set, catalog supports create/delte/enumerate of 
  171. pseudonyms for a record.
  172.  
  173. kSupportsPartialPathNameBit:
  174. If this bit is set, catalog nodes can be specified using DNodeNumber of a 
  175. intermediate DNode and a partial name starting from that DNode to the intended 
  176. DNode.
  177.  
  178. kSupportsAuthenticationBit:
  179. If this bit is set, catalog supports authentication manager calls.
  180.  
  181. kSupportsProxiesBit:
  182. If this bit is set, catalog supports proxy related calls in authentication manager. 
  183.  
  184. kSupportsFindRecordBit:
  185. If this bit is set, catalog supports find record call.
  186.  
  187. Bits and corresponding masks are as defined below.
  188. */
  189. /* values of DirGestalt */
  190. /* Values of AuthLocalIdentityOp */
  191. /* Values of AuthLocalIdentityLockAction */
  192. /* Values of AuthNotifications */
  193. typedef unsigned short            DirSortOption;
  194.  
  195. typedef unsigned short            DirSortDirection;
  196.  
  197. typedef unsigned long            AccessMask;
  198.  
  199. typedef unsigned long            DirGestalt;
  200.  
  201. typedef unsigned long            AuthLocalIdentityOp;
  202.  
  203. typedef unsigned long            AuthLocalIdentityLockAction;
  204.  
  205. typedef unsigned long            AuthNotifications;
  206.  
  207. typedef SOMLargeStruct            DNodeID;                    /* Derived from a struct of 16 bytes in size */
  208.  
  209. typedef SOMLargeStruct            DirEnumSpec;                /* Derived from a struct of 38 bytes in size */
  210.  
  211. typedef SOMLargeStruct            DirMetaInfo;                /* Derived from a struct of 16 bytes in size */
  212.  
  213. typedef SOMLargeStruct            SLRV;                        /* Derived from a struct of 8 bytes in size */
  214.  
  215. /* Catalog types and operations */
  216. /* unique identifier for an identity */
  217. typedef unsigned long            AuthIdentity;
  218.  
  219. /* Umbrella LocalIdentity */
  220. typedef AuthIdentity            LocalIdentity;
  221.  
  222. /* A DES key is 8 bytes of data */
  223. typedef SOMLargeStruct            DESKey;                        /* Derived from a struct of 8 bytes in size */
  224.  
  225. typedef OpaquePtr                RC4Key;                        /* Substituted OpaquePtr for array of Byte of size 8 */
  226.  
  227. typedef unsigned long            AuthKeyType;
  228.  
  229. /* key type followed by its data */
  230. typedef SOMLargeStruct            AuthKey;                    /* Derived from a struct of 20 bytes in size */
  231.  
  232. typedef OpaquePtr                AuthKeyPtr;                    /* Substituted OpaquePtr for ``AuthKey*'' */
  233.  
  234.  
  235.  
  236. typedef OpaquePtr                AuthParamBlockPtr;            /* Substituted OpaquePtr for ``AuthParamBlock*'' */
  237.  
  238. /* Fix parameter passing convention (#1274062) ggs, 8-7-95 */
  239. typedef OpaquePtr AuthIOCompletionProcPtr;
  240. typedef OpaquePtr AuthIOCompletionUPP;
  241. /*
  242. ****************************************************************************
  243.  
  244.  
  245.         Authentication Manager operations 
  246.  
  247. ****************************************************************************
  248. */
  249. /*
  250. kAuthResolveCreationID:
  251. userRecord will contain the user information whose creationID has to be
  252. returned. A client must make this call when he does not know the creaitionID.
  253. The creationID must be set to nil before making the call. The server will attempt
  254. to match the recordid's in the data base which match the user name and
  255. type in the record.  Depending on number of matchings, following
  256. results will be returned.
  257. Exactly One Match : CreationID in RecordID and also in buffer (if buffer is given)
  258. totalMatches = actualMatches = 1.
  259. > 1 Match:
  260.     Buffer is Large Enough:
  261.     totalMatches = actualMatches
  262.     Buffer will contain all the CIDs, kOCEAmbiguousMatches error.
  263. > 1 Match:
  264.     Buffer is not Large Enough:
  265.     totalMatches > actualMatches
  266.     Buffer will contain all the CIDs (equal to actualMatches), daMoreDataError error.
  267. 0 Matches:
  268.  kOCENoSuchRecord error
  269. */
  270. typedef SOMLargeStruct            AuthResolveCreationIDPB;    /* Derived from a struct of 82 bytes in size */
  271.  
  272. /*
  273. kAuthBindSpecificIdentity:
  274. userRecord will contain the user information whose identity has to be
  275. verified. userKey will contain the userKey. An Identity is returned which
  276. binds the key and the userRecord. The identity returned can be used in the 'identity'
  277. field in the header portion (AuthParamHeader) for authenticating the Catalog and
  278. Authentication manager calls.
  279. */
  280. typedef SOMLargeStruct            AuthBindSpecificIdentityPB;    /* Derived from a struct of 74 bytes in size */
  281.  
  282. /*
  283. kAuthUnbindSpecificIdentity:
  284. This call will unbind the userRecord and key which were bind earlier.
  285. */
  286. typedef SOMLargeStruct            AuthUnbindSpecificIdentityPB; /* Derived from a struct of 66 bytes in size */
  287.  
  288. /*
  289. kAuthGetSpecificIdentityInfo:
  290. This call will return the userRecord for the given identity. Note: key is not
  291. returned because this would compromise security.
  292. */
  293. typedef SOMLargeStruct            AuthGetSpecificIdentityInfoPB; /* Derived from a struct of 70 bytes in size */
  294.  
  295. /*
  296. kAuthAddKey:
  297. userRecord will contain the user information whose identity has to be
  298. created. userKey will point to the key to be created. password points to
  299. an RString containing the password used to generate the key.
  300. */
  301. typedef SOMLargeStruct            AuthAddKeyPB;                /* Derived from a struct of 74 bytes in size */
  302.  
  303. /*
  304. kAuthChangeKey:
  305. userRecord will contain the user information whose identity has to be
  306. created. userKey will point to the key to be created. password points to
  307. an RString containing the password used to generate the key.
  308. */
  309. typedef SOMLargeStruct            AuthChangeKeyPB;            /* Derived from a struct of 74 bytes in size */
  310.  
  311. /*
  312. AuthDeleteKey:
  313. userRecord will contain the user information whose Key has to be deleted.
  314. */
  315. typedef SOMLargeStruct            AuthDeleteKeyPB;            /* Derived from a struct of 66 bytes in size */
  316.  
  317. /* AuthPasswordToKey: Converts an RString into a key. */
  318. typedef SOMLargeStruct            AuthPasswordToKeyPB;        /* Derived from a struct of 74 bytes in size */
  319.  
  320. /*
  321. kAuthGetCredentials:
  322. userRecord will contain the user information whose identity has to be
  323. kMailDeletedMask. keyType (e.g. asDESKey) will indicate what type of key has to
  324. be deleted.
  325. */
  326. typedef SOMLargeStruct            AuthGetCredentialsPB;        /* Derived from a struct of 86 bytes in size */
  327.  
  328. /*
  329. AuthDecryptCredentialsPB:
  330. Changes:
  331. userKey is changed userIdentity.
  332. userRecord is changed to initiatorRecord. User must supply buffer
  333. to hold initiatorRecord.
  334. agentList has changed to agent. There wil be no call back.
  335. User must supply buffer to hold agent Record.
  336. An additional boolean parameter 'hasAgent' is included.
  337. Toolbox will set this if an 'Agent' record is found in the
  338. credentials. If RecordIDPtr is 'nil', no agent record will
  339. be copied. However user can examine 'hasAgent', If true user
  340. can reissue this call with apprpriate buffer for getting a recordID.
  341. agent has changed to intermediary.  User must supply buffer to hold 
  342. intermediary Record.  The toolbox will set 'hasIntermediary' if an
  343. 'intermediary' record is found in the credentials. 
  344. */
  345. typedef SOMLargeStruct            AuthDecryptCredentialsPB;    /* Derived from a struct of 96 bytes in size */
  346.  
  347. typedef SOMLargeStruct            AuthMakeChallengePB;        /* Derived from a struct of 78 bytes in size */
  348.  
  349. typedef SOMLargeStruct            AuthMakeReplyPB;            /* Derived from a struct of 86 bytes in size */
  350.  
  351. typedef SOMLargeStruct            AuthVerifyReplyPB;            /* Derived from a struct of 82 bytes in size */
  352.  
  353. /*
  354. kAuthGetUTCTime:
  355. RLI will contain a valid RLI for a cluster server.
  356. UTC(GMT) time from one of the cluster server will be returned.
  357. An 'offSet' from UTC(GMT) to Mac Local Time will also be returned.
  358. If RLI is nil Map DA is used to determine UTC(GMT).
  359. Mac Local Time = theUTCTime + theUTCOffset.
  360. */
  361. typedef SOMLargeStruct            AuthGetUTCTimePB;            /* Derived from a struct of 74 bytes in size */
  362.  
  363. /*
  364. kAuthMakeProxy:
  365. A user represented bu the 'userIdentity' can make a proxy using this call.
  366. 'recipient' is the RecordID of the recipient whom user is requesting proxy.
  367. 'intermediary' is the RecordID of the intermediary holding proxy for the user.
  368. 'firstValid' is time at which proxy becomes valid.
  369. 'expiry' is the time at which proxy must expire.
  370. 'proxyLength' will have the length of the buffer pointed by 'proxy' as input.
  371. When the call completes, it will hold the actual length of proxy. If the
  372. call completes 'kOCEMoreData' error, client can reissue the call with the
  373. buffer size as 'proxyLength' returned.
  374. expiry is a suggestion, and may be adjusted to be earlier by the ADAP/OCE server.
  375. The 'proxy' obtained like this might be used by the 'intermediary' to obtain credentials
  376. for the server using TradeProxyForCredentials call.
  377. authDataLength and authData are intended for possible future work, but are
  378. ignored for now.
  379. */
  380. typedef SOMLargeStruct            AuthMakeProxyPB;            /* Derived from a struct of 98 bytes in size */
  381.  
  382. /*
  383. kAuthTradeProxyForCredentials:
  384. Using this call, intermediary holding a 'proxy' for a recipient may obtain credentials
  385. for that recipient. 'userIdentity' is the identity for the 'intermediary'.
  386. 'recipient' is the RecordID for whom credetials are requested.
  387. 'principal' is the RecordID of the user who created the proxy.
  388. 'proxyLength' is the length of data pointed by 'proxy.
  389. If the call is succesfull, credentials will be returned in the
  390. buffer pointed by 'credentials'. 'expiry' is the desired expiry time at input.
  391. When call succeds this will have expiry time of credentials.
  392. This is very similar to GetCredentials except that we (of course) need the proxy,
  393. but we also need the name of the principal who created the proxy.
  394. */
  395. typedef SOMLargeStruct            AuthTradeProxyForCredentialsPB; /* Derived from a struct of 98 bytes in size */
  396.  
  397. /* API for Local Identity Interface */
  398. /*
  399. AuthGetLocalIdentityPB:
  400. A Collaborative application intended to work under the umbrella of LocalIdentity
  401. for the OCE toolbox will have to make this call to obtain LocalIdentity.
  402. If LocalIdentity has not been setup, then application will get
  403. 'kOCEOCESetupRequired.'. In this case application should put the dialog
  404. recommended by the OCE Setup document and guide the user through OCE Setup.
  405. If the OCESetup contains local identity, but user has not unlocked, it will get
  406. kOCELocalAuthenticationFail. In this case application should use SDPPromptForLocalIdentity
  407. to prompt user for the password.
  408. If a backGround application or stand alone code requires LocalIdentity, if it gets the
  409. OSErr from LocalIdentity and can not call SDPPromptForLocalIdentity, it should it self
  410. register with the toolbox using kAuthAddToLocalIdentityQueue call. It will be notified
  411. when a LocalIdentity gets created by a foreground application.
  412. */
  413. typedef SOMLargeStruct            AuthGetLocalIdentityPB;        /* Derived from a struct of 66 bytes in size */
  414.  
  415. /*
  416. kAuthUnlockLocalIdentity:
  417. The LocalIdentity can be created using this call.
  418. The userName and password correspond to the LocalIdentity setup.
  419. If the password matches, then collabIdentity will be returned.
  420. Typically SDPPromptForLocalIdentity call will make this call.
  421. All applications which are registered through kAuthAddToLocalIdentityQueue
  422. will be notified.
  423. */
  424. typedef SOMLargeStruct            AuthUnlockLocalIdentityPB;    /* Derived from a struct of 74 bytes in size */
  425.  
  426. /*
  427. kAuthLockLocalIdentity:
  428. With this call existing LocalIdentity can be locked. If the ASDeleteLocalIdetity
  429. call fails with 'kOCEOperationDenied' error, name will contain the application which
  430. denied the operation. This name will be supplied by the application
  431. when it registered through kAuthAddToLocalIdentityQueue call
  432. */
  433. typedef SOMLargeStruct            AuthLockLocalIdentityPB;    /* Derived from a struct of 70 bytes in size */
  434.  
  435. typedef OpaquePtr NotificationProcPtr;
  436. typedef OpaquePtr NotificationUPP;
  437. typedef NotificationUPP            NotificationProc;
  438.  
  439. /*
  440. kAuthAddToLocalIdentityQueue:
  441. An application requiring notification of locking/unlocking of the
  442. LocalIdentity can install itself using this call. The function provided
  443. in 'notifyProc' will be called whenever the requested event happens.
  444. When an AuthLockLocalIdentity call is made to the toolbox, the notificationProc
  445. will be called with 'kAuthLockPending'. The application may refuse the lock by returning
  446. a 'true' value. If all the registered entries return 'false' value, locking will be done
  447. successfully. Otherwise 'kOCEOperationDenied' error is returned to the caller. The appName
  448. (registered with the notificationProc) of the application which denied locking is also
  449. returned to the caller making the AuthLockIdentity call.
  450. */
  451. typedef SOMLargeStruct            AuthAddToLocalIdentityQueuePB; /* Derived from a struct of 74 bytes in size */
  452.  
  453. /*kAuthRemoveFromLocalIdentityQueue:*/
  454. typedef SOMLargeStruct            AuthRemoveFromLocalIdentityQueuePB; /* Derived from a struct of 66 bytes in size */
  455.  
  456. /*
  457. kAuthSetupLocalIdentity:
  458. The LocalIdentity can be Setup using this call.
  459. The userName and password correspond to the LocalIdentity setup.
  460. If a LocalIdentity Setup already exists 'kOCELocalIdentitySetupExists' error
  461. will be returned.
  462. */
  463. typedef SOMLargeStruct            AuthSetupLocalIdentityPB;    /* Derived from a struct of 74 bytes in size */
  464.  
  465. /*
  466. kAuthChangeLocalIdentity:
  467. An existing LocalIdentity  Setup can be changed using this call.
  468. The userName and password correspond to the LocalIdentity setup.
  469. If a LocalIdentity Setup does not exists 'kOCEOCESetupRequired' error
  470. will be returned. The user can use  kAuthSetupLocalIdentity call to setit up.
  471. If the 'password' does not correspond to the existing setup, 'kOCELocalAuthenticationFail'
  472. OSErr will be returned. If successful, LocalID will have new name as 'userName' and
  473. password as 'newPassword' and if any applications has installed into 
  474. LocalIdentityQueue with kNotifyNameChangeMask set, it will be notified with 
  475. kAuthLocalIdentityNameChangeOp action value. 
  476.  
  477. */
  478. typedef SOMLargeStruct            AuthChangeLocalIdentityPB;    /* Derived from a struct of 78 bytes in size */
  479.  
  480. /*
  481. kAuthRemoveLocalIdentity:
  482. An existing LocalIdentity  Setup can be removed using this call.
  483. The userName and password correspond to the LocalIdentity setup.
  484. If a LocalIdentity Setup does not exists 'kOCEOCESetupRequired' error
  485. will be returned.
  486. If the 'password' does not correspond to the existing setup, 'kOCELocalAuthenticationFail'
  487. OSErr will be returned. If successful, LocalIdentity will be removed from the OCE Setup.
  488. This is a very distructive operation, user must be warned enough before actually making
  489. this call.
  490. */
  491. typedef SOMLargeStruct            AuthRemoveLocalIdentityPB;    /* Derived from a struct of 74 bytes in size */
  492.  
  493. /*
  494. kOCESetupAddDirectoryInfo:
  495. Using this call identity for a catalog can be setup under LocalIdentity umbrella.
  496. ASCreateLocalIdentity should have been done succesfully before making this call.    
  497. directoryRecordCID -> is the record creationID obtained when DirAddOCEDirectory or
  498. DirAddDSAMDirectory call was made.
  499. rid-> is the recordID in which the identity for the catalog will be established.
  500. password-> the password associated with the rid in the catalog world.
  501. */
  502. typedef SOMLargeStruct            OCESetupAddDirectoryInfoPB;    /* Derived from a struct of 78 bytes in size */
  503.  
  504. /*
  505. kOCESetupChangeDirectoryInfo:
  506. Using this call an existing identity for a catalog under LocalIdentity umbrella
  507. can be changed.
  508. ASCreateLocalIdentity should have been done succesfully before making this call.
  509. directoryRecordCID -> is the record creationID obtained when DirAddOCEDirectory or
  510. DirAddDSAMDirectory call was made.
  511. rid-> is the recordID in which the identity for the catalog will be established.
  512. password-> the password associated with the rid in the catalog world.
  513. newPassword -> the new password for the catalog
  514. */
  515. typedef SOMLargeStruct            OCESetupChangeDirectoryInfoPB; /* Derived from a struct of 82 bytes in size */
  516.  
  517. /*
  518. kOCESetupRemoveDirectoryInfo:
  519. Using this call an existing identity for a catalog under LocalIdentity umbrella
  520. can be changed.
  521. ASCreateLocalIdentity should have been done succesfully before making this call.
  522. directoryRecordCID -> is the record creationID obtained when DirAddOCEDirectory or
  523. */
  524. typedef SOMLargeStruct            OCESetupRemoveDirectoryInfoPB; /* Derived from a struct of 70 bytes in size */
  525.  
  526. /*
  527. kOCESetupGetDirectoryInfo:
  528. Using this call info on an existing identity for a particular catalog under LocalIdentity umbrella
  529. can be obtained.
  530. For the specified catalog 'directoryName' and 'discriminator', rid and nativeName will
  531. returned. Caller must provide appropriate buffer to get back rid and nativeName.
  532. 'password' will be returned  for  non-ADAP Catalogs.
  533. */
  534. typedef SOMLargeStruct            OCESetupGetDirectoryInfoPB;    /* Derived from a struct of 86 bytes in size */
  535.  
  536. /*
  537. ****************************************************************************
  538.  
  539.  
  540.          Catalog Manager operations
  541.  
  542.  
  543. ****************************************************************************
  544. */
  545.  
  546.  
  547. typedef OpaquePtr                DirParamBlockPtr;            /* Substituted OpaquePtr for ``DirParamBlock*'' */
  548.  
  549. typedef OpaquePtr DirIOCompletionProcPtr;
  550. typedef OpaquePtr DirIOCompletionUPP;
  551. /* AddRecord */
  552. typedef SOMLargeStruct            DirAddRecordPB;                /* Derived from a struct of 68 bytes in size */
  553.  
  554. /* DeleteRecord */
  555. typedef SOMLargeStruct            DirDeleteRecordPB;            /* Derived from a struct of 66 bytes in size */
  556.  
  557. /* aRecord must contain valid PackedRLI and a CreationID. */
  558. /**********************************************************************************/
  559. /*
  560. DirEnumerate:
  561. This call can be used to enumerate both DNodes and records under a specified
  562. DNode. A DNode is specified by the PackedRLIPtr 'aRLI'.
  563.  
  564. startingPoint indicates where to start the enumeration.  Initially,
  565. it should be set to a value of nil.  After some records are enumerated,
  566. the client can issue the call again with the same aRLI and recordName and
  567. typeList. The last received DirEnumSpec in the startingPoint field.  The server
  568. will continue the enumeration from that record on. if user wants to get back the
  569. value specified in the startingRecord also, the Boolean 'includeStartingPoint'
  570. must be set to 'true'. If this is set to 'false', records specified after the
  571. startingPoint record will be returned.
  572.  
  573. sortBy indicates to the server to return the records that match in name-first
  574. or type-first order.  sortDirection indicates to the server to search in forward
  575. or backward sort order for RecordIDs Specified.
  576.  
  577. RecordIDS and Enumeration Criteria:
  578.  
  579. PackedRLIPtr parameter 'aRLI' will be accepted for DNode
  580. specification.
  581.  
  582. One RStringPtr 'nameMatchString' is provided. User is allowed to
  583. specify a wild card in the name. WildCard specification is specified in 
  584. matchNameHow parameter and possible values are defined in DirMatchWith Enum.
  585.  
  586. 'typeCount' parameter indicate how many types are in the 'typeList'.
  587.  
  588. 'typeList' parmeter is a pointer to an RString array of size 'typeCount'.
  589.  
  590. If 'typeCount' is exactly equal to one, a wild card can be specified
  591. for the entity type; otherwise types have to be completely specified.
  592. WildCard specification is specified in  matchNameHow parameter
  593.  and possible values are defined in DirMatchWith Enum.
  594.  
  595.  
  596. A nil value for 'startingPoint' is allowed when sortDirection specified
  597. is 'kSortBackwards'. This was not allowed previously.
  598.  
  599. 'enumFlags' parameter is a bit field. The following bits can be set:
  600.     kEnumDistinguishedNameMask to get back records in the cluster data base.
  601.     kEnumAliasMask to get back record aliases
  602.     kEnumPseudonymMask to get back record pseudonyms
  603.     kEnumDNodeMask to get back any children dNodes for the DNode specified in the
  604.     'aRLI' parameter.
  605.     kEnumForeignDNodeMask to get back any children dNodes which have ForeignDnodes in the
  606.     dNode specified in the 'aRLI' parameter.
  607.  
  608.     kEnumAll is combination of all five values and can be used to enumerate
  609.     everything under a specified DNode.
  610.  
  611.  
  612.  
  613. The results returned for each element will consist of a DirEnumSpec.
  614. The DirEnumSpec contains 'enumFlag' which indicates the type of entity and a
  615. union which will have either DNodeID or LocalRecordID depending on the value of 'enumFlag'.
  616. The 'enumFlag'  will indicate whether the returned element is a
  617. record(kEnumDistinguishedNameMask bit) or a alias(kEnumAliasMask bit) or a
  618. Pseudonym(kEnumPseudonymMask) or a child DNode(kEnumDNodeMask bit).  If the 'enumFlag' value
  619. is kEnumDnodeMask, it indicates the value returned in the union is a DNodeID (i.e. 'dNodeNumber'
  620. is the 'dNodeNumber' of the child dnode(if the catalog supports dNodeNumbers, otherwise
  621. this will be set to zero). The name will be the child dnode name. For other values of the
  622. 'enumFlag', the value in the union will be LocalRecordID. In addition to kEnumDnodeMask it is
  623. possible that kEnumForeignDNodeMask is also set. This is an advisory bit and application must make
  624. it's own decision before displaying these records. If catalog supports kSupportIndexRatioMask, it
  625. may also return the relative position of the record (percentile of total records) in the 
  626. indexRatio field in EnumSpec.
  627.  
  628.  
  629. responseSLRV will contain the script, language, region and version of the oce sorting software.
  630. The results will be collected in the 'getBuffer' supplied by the user.
  631. If buffer can not hold all the data returned 'kOCEMoreData' error will be returned.
  632.  
  633. If user receives 'noErr' or 'kOCEMoreData', buffer will contain valid results. A user
  634. can extract the results in the 'getBuffer' by making DirEnumerateParse' call.
  635. */
  636. typedef SOMLargeStruct            DirEnumerateGetPB;            /* Derived from a struct of 114 bytes in size */
  637.  
  638. /* The EnumerateRecords call-back function is defined as follows: */
  639. typedef OpaquePtr ForEachDirEnumSpecProcPtr;
  640. typedef OpaquePtr ForEachDirEnumSpecUPP;
  641. typedef ForEachDirEnumSpecUPP    ForEachDirEnumSpec;
  642.  
  643. /*
  644. EnumerateParse:
  645. After an EnumerateGet call has completed, call EnumerateParse
  646. to parse through the buffer that was filled in EnumerateGet.
  647.  
  648. 'eachEnumSpec' will be called each time to return to the client a
  649. DirEnumSpec that matches the pattern for enumeration. 'enumFlag' indicates the type
  650. of information returned in the DirEnumSpec
  651. The clientData parameter that you pass in the parameter block will be passed
  652. to 'forEachEnumDSSpecFunc'.  You are free to put anything in clientData - it is intended
  653. to allow you some way to match the call-back to the original call (for
  654. example, you make more then one aysynchronous EnumerateGet calls and you want to
  655. associate returned results in some way).
  656.  
  657. The client should return FALSE from 'eachEnumSpec' to continue
  658. processing of the EnumerateParse request.  Returning TRUE will
  659. terminate the EnumerateParse request.
  660.  
  661. For synchronous calls, the call-back routine actually runs as part of the same thread
  662. of execution as the thread that made the EnumerateParse call.  That means that the
  663. same low-memory globals, A5, stack, etc. are in effect during the call-back
  664. that were in effect when the call was made.  Because of this, the call-back
  665. routine has the same restrictions as the caller of EnumerateParse:
  666. if EnumerateParse was not called from interrupt level, then the call-
  667. back routine can allocate memory. For asynchronous calls, call-back routine is
  668. like a ioCompletion except that A5 will be preserved for the application.
  669. */
  670. typedef SOMLargeStruct            DirEnumerateParsePB;        /* Derived from a struct of 114 bytes in size */
  671.  
  672. /*
  673.  * FindRecordGet operates similarly to DirEnumerate except it returns a list
  674.  * of records instead of records local to a cluster.
  675. */
  676. typedef SOMLargeStruct            DirFindRecordGetPB;            /* Derived from a struct of 114 bytes in size */
  677.  
  678. /* The FindRecordParse call-back function is defined as follows: */
  679. typedef OpaquePtr ForEachRecordProcPtr;
  680. typedef OpaquePtr ForEachRecordUPP;
  681. typedef ForEachRecordUPP        ForEachRecord;
  682.  
  683. /*
  684.  * This PB same as DirFindRecordGet except it includes the callback function
  685. */
  686. typedef SOMLargeStruct            DirFindRecordParsePB;        /* Derived from a struct of 118 bytes in size */
  687.  
  688. /*
  689. LookupGet:
  690.  
  691. aRecordList is an array of pointers to RecordIDs, each of which must
  692. contain valid PackedRLI and a CreationID.  recordIDCount is
  693. the size of this array.
  694.  
  695. attrTypeList is an array of pointers to AttributeTypes.  attrTypeCount is
  696. the size of this array.
  697.  
  698. staringRecordIndex is the record from which to continue the lookup.
  699. If you want to start from first record in the list, this must be 1 (not zero).
  700. This value must always be <= recordIDCount.
  701.  
  702. startingAttributeIndex is the AttributeType from which we want to continue the lookup.
  703. If you want to start from first attribute in the list, this must be 1 (not zero).
  704. This value must always be <= attrTypeCount.
  705.  
  706. startingAttribute is the value of the attribute value from which we want to
  707. continue lookup. In case of catalogs supporting creationIDs, startingAttribute
  708. may contain only a CID. Other catalogs may require the entire value.
  709. If a non-null cid is given and if an attribute value with that cid is not found, this
  710. call will terminate with kOCENoSuchAttribute error. A client should not make a LookupParse call
  711. after getting this error.
  712.  
  713. 'includeStartingPoint' boolean can be set to 'true' to receive the value specified in the
  714. startingPoint in the results returned. If this is set to 'false', the value
  715. specified in the startingAttribute will not be returned.
  716.  
  717. When LookupGet call fails with kOCEMoreData, the client will be able to find out where the call ended
  718. with a subsequent LookupParse call. When the LookupParse call completes with kOCEMoreData,
  719. lastRecordIndex, lastAttributeIndex and lastValueCID will point to the corresponding
  720. recordID, attributeType and the CreationID of the last value returned successfully. These parameters
  721. are exactly the same ones for the startingRecordIndex, startingAttributeIndex, and startingAttrValueCID
  722. so they can be used in a subsequent LookupGet call to continue the lookup.
  723.  
  724. In an extreme case, It is possible that we had an attribute value that is too large to fit
  725. in the client's buffer. In such cases, if it was the only thing that we tried to fit
  726. into the buffer, the client will not able to proceed further because he will not know the
  727. attributeCID of the attribute to continue with.  Also he does not know how big a buffer
  728. would be needed for the next call to get this 'mondo' attribute value successfully.
  729.  
  730. to support this, LookupParse call will do the following:
  731.  
  732. If LookupGet has failed with kOCEMoreData error, LookupParse will check to make sure that
  733. ForEachAttributeValueFunc has been called at least once. If so, the client has the option
  734. to continue from that attribute CreationID (for PAB/ADAP) in the next LookupGet call.
  735. However, if it was not even called once, then the attribute value may be too big to fit in the
  736. user's buffer. In this case, lastAttrValueCID (lastAttribute) and attrSize are returned in the
  737. parse buffer and the call will fail with kOCEMoreAttrValue. However, it is possible that
  738. ForEachAttributeValue was not called because the user does not have read access to some of
  739. the attributeTypes in the list, and the buffer was full before even reading the creationID of
  740. any of the attribute values.  A kOCEMoreData error is returned.
  741.  
  742. The Toolbox will check for duplicate RecordIDs in the aRecordList. If found, it will return
  743. 'daDuplicateRecordIDErr'.
  744.  
  745. The Toolbox will check for duplicate AttributeTypes in the attrTypeList. If found it will
  746. return 'daDuplicateAttrTypeErr'.
  747. */
  748. typedef SOMLargeStruct            DirLookupGetPB;                /* Derived from a struct of 174 bytes in size */
  749.  
  750. /* The Lookup call-back functions are defined as follows: */
  751. typedef OpaquePtr ForEachLookupRecordIDProcPtr;
  752. typedef OpaquePtr ForEachLookupRecordIDUPP;
  753. typedef ForEachLookupRecordIDUPP ForEachLookupRecordID;
  754.  
  755. typedef OpaquePtr ForEachAttrTypeLookupProcPtr;
  756. typedef OpaquePtr ForEachAttrTypeLookupUPP;
  757. typedef ForEachAttrTypeLookupUPP ForEachAttrTypeLookup;
  758.  
  759. typedef OpaquePtr ForEachAttrValueProcPtr;
  760. typedef OpaquePtr ForEachAttrValueUPP;
  761. typedef ForEachAttrValueUPP        ForEachAttrValue;
  762.  
  763. /*
  764. LookupParse:
  765.  
  766. After a LookupGet call has completed, call LookupParse
  767. to parse through the buffer that was filled in LookupGet.  The
  768. toolbox will parse through the buffer and call the appropriate call-back routines
  769. for each item in the getBuffer.
  770.  
  771. 'eachRecordID' will be called each time to return to the client one of the
  772. RecordIDs from aRecordList.  The clientData parameter that you
  773. pass in the parameter block will be passed to eachRecordID.
  774. You are free to put anything in clientData - it is intended to allow
  775. you some way to match the call-back to the original call (in case, for
  776. example, you make simultaneous asynchronous LookupGet calls).  If you don't
  777. want to get a call-back for each RecordID (for example, if you're looking up
  778. attributes for only one RecordID), pass nil for eachRecordID.
  779.  
  780. After forEachLocalRecordIDFunc is called, eachAttrType may be called to pass an
  781. attribute type (one from attrTypeList) that exists in the record specified
  782. in the last eachRecordID call.  If you don't want to get a call-back for
  783. each AttributeType (for example, if you're looking up only one attribute type,
  784. or you prefer to read the type from the Attribute struct during the eachAttrValue
  785. call-back routine), pass nil for eachAttrType. However access controls may
  786. prohibit you from reading some attribute types; in that case eachAttrValue
  787. may not be called even though the value exists. Hence the client should
  788. supply this call-back function to see the access controls for each attribute type.
  789.  
  790. This will be followed by one or more calls to eachAttrValue, to pass the
  791. type, tag, and attribute value.  NOTE THIS CHANGE:  you are no longer expected to
  792. pass a pointer to a buffer in which to put the value.  Now you get a pointer to
  793. the value, and you can process it within the call-back routine.
  794. After one or more values are returned, eachAttrType may be called again to pass
  795. another attribute type that exists in the last-specified RecordID.
  796.  
  797. The client should return FALSE from eachRecordID, eachAttrType, and
  798. eachAttrValue to continue processing of the LookupParse request.  Returning TRUE
  799. from any call-back will terminate the LookupParse request.
  800.  
  801. If LookupGet has failed with kOCEMoreData error, LookupParse will check to make sure that
  802. ForEachAttributeValueFunc has been called at least once. If so, the client has the option
  803. to continue from that attribute CreationID (for PAB/ADAP) in the next LookupGet call.
  804. However, if it was not even called once, then the attribute value may be too big to fit in the
  805. user's buffer. In this case, lastAttrValueCID (lastAttribute) and attrSize are returned in the
  806. parse buffer and the call will fail with kOCEMoreAttrValue. However, it is possible that
  807. ForEachAttributeValue was not called because the user does not have read access to some of
  808. the attributeTypes in the list, and the buffer was full before even reading the creationID of
  809. any of the attribute values.  A kOCEMoreData error is returned.
  810.  
  811. For synchronous calls, the call-back routine actually runs as part of the same thread
  812. of execution as the thread that made the LookupParse call.  That means that the
  813. same low-memory globals, A5, stack, etc. are in effect during the call-back
  814. that were in effect when the call was made.  Because of this, the call-back
  815. routine has the same restrictions as the caller of LookupParse:
  816. if LookupParse was not called from interrupt level, then the call-
  817. back routine can allocate memory. For asynchronous calls, call-back routine is
  818. like a ioCompletion except that A5 will be preserved for the application.
  819. */
  820. typedef SOMLargeStruct            DirLookupParsePB;            /* Derived from a struct of 174 bytes in size */
  821.  
  822. /* AddAttributeValue */
  823. typedef SOMLargeStruct            DirAddAttributeValuePB;        /* Derived from a struct of 70 bytes in size */
  824.  
  825. /*
  826. aRecord must contain valid PackedRLI and a CreationID.
  827.  
  828. Instead of passing type, length, and value in three separate
  829. fields, we take a pointer to an Attribute structure that contains
  830. all three, and has room for the AttributeCreationNumber.
  831. The AttributeCreationID will be returned in the attr itself.
  832.  
  833. The AttributeTag tells the catalog service that the attribute is an RString,
  834. binary, or a RecordID.
  835. */
  836. /*
  837. DeleteAttributeType:
  838. This call is provided so that an existing AttributeType can be deleted.
  839. If any attribute values exist for this type, they will all be deleted
  840. (if the user has access rights to delete the values) and then the attribute type
  841. will be deleted. Otherwise dsAccessDenied error will be returned.
  842. */
  843. typedef SOMLargeStruct            DirDeleteAttributeTypePB;    /* Derived from a struct of 70 bytes in size */
  844.  
  845. /*
  846.     DeleteAttributeValue
  847. */
  848. typedef SOMLargeStruct            DirDeleteAttributeValuePB;    /* Derived from a struct of 70 bytes in size */
  849.  
  850. /*
  851.     ChangeAttributeValue:
  852.     currentAttr ==> the attribute to be changed. For ADAS and PAB CreationID is
  853.                     sufficient
  854.     newAttr     ==> new value for the attribute. For ADAS and PAB 
  855.                     CreationID field will be set when
  856.                     the call succeesfully completes
  857.     
  858.     aRecord     ==> must contain valid PackedRecordLocationInfo and a CreationID.
  859.  
  860.  
  861.     
  862. */
  863. typedef SOMLargeStruct            DirChangeAttributeValuePB;    /* Derived from a struct of 74 bytes in size */
  864.  
  865. /* VerifyAttributeValue */
  866. typedef SOMLargeStruct            DirVerifyAttributeValuePB;    /* Derived from a struct of 70 bytes in size */
  867.  
  868. /*
  869. aRecord must contain valid PackedRLI and a CreationID.
  870.  
  871. The attribute type and value are passed in the attribute structure.  If the
  872. attribute CreationID is non-zero, the server will verify that an attribute with
  873. the specified value and creation number exists in aRecord.  If the attribute
  874. CreationID is zero, the server will verify the attribute by type and value
  875. alone, and return the attribute CreationID in the Attribute struct if the
  876. attribute exists.
  877. */
  878. /*
  879. EnumerateAttributeTypesGet:
  880. The following two calls can be used to enumerate the attribute types present in
  881. a specified RecordID.  The first, EnumerateAttributeTypesGet, processes the request
  882. and reads the response into getBuffer, as much as will fit.  A kOCEMoreData error will
  883. be returned if the buffer was not large enough.  After this call completes, the
  884. client can call EnumerateAttributeTypesParse (see below).
  885.  
  886. The user will able to continue from a startingPoint by setting a startingAttrType.
  887. Typically, this should be the last value returned in EnumerateAttributeTypesParse call
  888. when 'kOCEMoreData' is returned.
  889.  
  890. If 'includeStartingPoint' is true when a 'startingAttrType' is specified, the starting value
  891. will be included in the results, if it exists. If this is set to false, this value will not
  892. be included. AttributeTypes following this type will be returned.
  893. */
  894. typedef SOMLargeStruct            DirEnumerateAttributeTypesGetPB; /* Derived from a struct of 106 bytes in size */
  895.  
  896. /* The call-back function is defined as follows: */
  897. typedef OpaquePtr ForEachAttrTypeProcPtr;
  898. typedef OpaquePtr ForEachAttrTypeUPP;
  899. typedef ForEachAttrTypeUPP        ForEachAttrType;
  900.  
  901. /*
  902. EnumerateAttributeTypesParse:
  903. After an EnumerateAttributeTypesGet call has completed, call EnumerateAttributeTypesParse
  904. to parse through the buffer that was filled in EnumerateAttributeTypesGet.  The
  905. toolbox will parse through the buffer and call the call-back routine for
  906. each attribute type in the getBuffer.
  907.  
  908. The client should return false from eachAttrType to continue
  909. processing of the EnumerateAttributeTypesParse request.  Returning true will
  910. terminate the EnumerateAttributeTypesParse request.  The clientData parameter that
  911. you pass in the parameter block will be passed to eachAttrType.
  912. You are free to put anything in clientData - it is intended to allow
  913. you some way to match the call-back to the original call (in case, for
  914. example, you make simultaneous asynchronous calls).
  915.  
  916. For synchronous calls, the call-back routine actually runs as part of the same thread
  917. of execution as the thread that made the EnumerateAttributeTypesParse call.  That means that the
  918. same low-memory globals, A5, stack, etc. are in effect during the call-back
  919. that were in effect when the call was made.  Because of this, the call-back
  920. routine has the same restrictions as the caller of EnumerateAttributeTypesParse.
  921. If EnumerateAttributeTypesParse was not called from interrupt level, then the call-
  922. back routine can allocate memory. For asynchronous calls, call-back routine is
  923. like a ioCompletion except that A5 will be preserved for the application.
  924. */
  925. typedef SOMLargeStruct            DirEnumerateAttributeTypesParsePB; /* Derived from a struct of 106 bytes in size */
  926.  
  927. /*
  928. DirAbort:
  929. With this call a user will able to abort an outstanding catalog service call.
  930. A user must pass a pointer to the parameter block for the outstanding call.
  931. In the current version of the product, the toolbox will process this call
  932. for NetSearchADAPDirectoriesGet or FindADAPDirectoryByNetSearch calls and if possible
  933. it will abort. For other calls for ADAP and PAB this will return 'daAbortFailErr'.
  934. For CSAM catalogs, this call will be passed to the corresponding CSAM driver.
  935. The CSAM driver may process this call or may return 'daAbortFailErr'. This call can
  936. be called only in synchronous mode. Since the abort call makes references to fields in
  937. the pb associated with the original call, this pb must not be disposed or or altered if
  938. the original call completes before the abort call has completed.
  939. */
  940. typedef SOMLargeStruct            DirAbortPB;                    /* Derived from a struct of 66 bytes in size */
  941.  
  942. /*
  943. AddPseudonym:
  944. An alternate name and type can be added to a given record. If allowDuplicate
  945. is set the name and type will be added even if the same name and type already
  946. exists.
  947. */
  948. typedef SOMLargeStruct            DirAddPseudonymPB;            /* Derived from a struct of 76 bytes in size */
  949.  
  950. /*
  951. DeletePseudonym:
  952. An alternate name and type for a given record can be deleted.
  953. */
  954. typedef SOMLargeStruct            DirDeletePseudonymPB;        /* Derived from a struct of 74 bytes in size */
  955.  
  956. /*
  957.     AddAlias:
  958.     This call can be used to create an alias  record. The alias
  959.     can be created either in the same or different cluster. ADAS will not support
  960.     this call for this release. A new catalog capability flag 'kSupportsAlias' will indicate
  961.     if the catalog supports this call. PAB's will support this call. For the PAB implementation,
  962.     this call will create a record with the name and type specified an aRecord.
  963.     This call works exactly like AddRecord.
  964.     If 'allowDuplicate' is false and another record with same name and type already exists
  965.     'daNoDupAllowed' error will be returned.
  966. */
  967. typedef SOMLargeStruct            DirAddAliasPB;                /* Derived from a struct of 68 bytes in size */
  968.  
  969. /*
  970. DirFindValue:
  971. This call can be used to find the occurrence of a value. The value
  972. to be matched is passed in the buffer 'matchingData' field. The current
  973. ADAP/PAB implementation will match a maximum of 32 bytes of data.
  974. For attribute values in the PAB/ADAP implementation, only the first 32 bytes will
  975. be used for comparing the occurrence of data. Search can be restricted to
  976. a particular record and/or attribute type by specifying 'aRecord' or 'aType'.
  977. After finding one occurrence, 'startingRecord' and 'startingAttribute'
  978. can be specified to find the next occurrence of the same value.
  979. 'sortDirection' can be specified with starting values to search forward or backward.
  980. When a matching value is found, the 'recordFound' indicates the reccordID in which the
  981. data occurrence was found, 'attributeFound' indicates the attribute with in which the
  982. matching data was found. ADAP/PAB implementation returns only the type and creationID of
  983. attributes. Catalogs which don't support creationIDs may return the
  984. complete value; hence this call may need a buffer to hold the data. For ADAP/PAB implementations
  985. the user has to make a DirLookup call to get the actual data. 'recordFound' and
  986. 'attributeFound' can be used to initialize 'startingRecord' and 'startingAttribute' to
  987. find the next occurrence of the value.
  988. */
  989. typedef SOMLargeStruct            DirFindValuePB;                /* Derived from a struct of 152 bytes in size */
  990.  
  991. /*
  992. EnumeratePseudonymGet:
  993. This call can be used to enumerate the existing pseudonyms for
  994. a given record specified in 'aRecord'. A starting point can be specified
  995. by 'startingName' and 'startingType'. If the 'includeStartingPoint' boolean
  996. is true and a starting point is specified, the name specified by startingName
  997. and startingType also is returned in the results, if it exists. If this is set to false,
  998. the pseudonym in startingName and Type is not included.
  999. Pseudonyms returned in the 'getBuffer' can be extracted by making an
  1000. EnumeratePseudonymParse call. The results will consist of a RecordID with the
  1001. name and type of the pseudonym. If the buffer could not hold all the results, then
  1002. 'kOCEMoreData' error will be returned. The user will be able to continue the call by
  1003. using the last result returned as starting point for the next call.
  1004. */
  1005. typedef SOMLargeStruct            DirEnumeratePseudonymGetPB;    /* Derived from a struct of 106 bytes in size */
  1006.  
  1007. /* The call-back function is defined as follows: */
  1008. typedef OpaquePtr ForEachRecordIDProcPtr;
  1009. typedef OpaquePtr ForEachRecordIDUPP;
  1010. typedef ForEachRecordIDUPP        ForEachRecordID;
  1011.  
  1012. /*
  1013. EnumeratePseudonymParse:
  1014. The pseudonyms returned in the 'getBuffer' from the EnumeratePseudonymGet call
  1015. can be extracted by using the EnumeratePseudonymParse call. 'eachRecordID'
  1016. will be called for each pseudonym.
  1017.  
  1018. Returning true from any call-back will terminate the EnumeratePseudonymParse call.
  1019.  
  1020. For synchronous calls, the call-back routine actually runs as part of the same thread
  1021. of execution as the thread that made the EnumeratePseudonymParse call.  That means that the
  1022. same low-memory globals, A5, stack, etc. are in effect during the call-back
  1023. that were in effect when the call was made.  Because of this, the call-back
  1024. routine has the same restrictions as the caller of EnumeratePseudonymParse:
  1025. if EnumeratePseudonymParse was not called from interrupt level, then the call-
  1026. back routine can allocate memory. For asynchronous calls, call-back routine is
  1027. like a ioCompletion except that A5 will be preserved for the application.
  1028. */
  1029. typedef SOMLargeStruct            DirEnumeratePseudonymParsePB; /* Derived from a struct of 106 bytes in size */
  1030.  
  1031. /* GetNameAndType */
  1032. typedef SOMLargeStruct            DirGetNameAndTypePB;        /* Derived from a struct of 66 bytes in size */
  1033.  
  1034. /*
  1035. aRecord must contain valid RLI and a CreationID.  It
  1036. must also contain pointers to maximum-length RStrings (name and type fields)
  1037. in which will be returned the record's distinguished name and type.
  1038. */
  1039. /*
  1040. SetNameAndType:
  1041. This call can be used to change a name and type for a record. The record
  1042. to be renamed is specified using 'aRecord'.
  1043. 'newName' and 'newType' indicate the name and type to be set.
  1044. 'allowDuplicate' if true indicates that name is to be set even if another
  1045. name and type exactly matches the newName and newType specified.
  1046.  
  1047. 'newName' and 'newType' are required since the catalogs not supporting
  1048. CreationID require name and type fields in the recordID to identify a given
  1049. record.
  1050. */
  1051. typedef SOMLargeStruct            DirSetNameAndTypePB;        /* Derived from a struct of 76 bytes in size */
  1052.  
  1053. /*
  1054. DirGetMetaRecordInfo: This call can be made to obtain
  1055. the MetaRecordInfo for a given record. Information returned
  1056. is 16 bytes of OPAQUE information about the record.
  1057. */
  1058. typedef SOMLargeStruct            DirGetRecordMetaInfoPB;        /* Derived from a struct of 82 bytes in size */
  1059.  
  1060. /*
  1061. DirGetDNodeMetaInfo: This call can be made to obtain
  1062. the DNodeMetaInfo for a given Packed RLI. Information returned
  1063. is 16 bytes of OPAQUE information about the DNode.
  1064. */
  1065. typedef SOMLargeStruct            DirGetDNodeMetaInfoPB;        /* Derived from a struct of 82 bytes in size */
  1066.  
  1067. /*
  1068. EnumerateDirectoriesGet:
  1069. A user can enumerate all the catalogs installed. This includes installed
  1070. ADAP and CSAM catalogs. The user can specify a signature as input to restrict
  1071. the results. kDirADAPKind will return only ADAP catalogs, kDirDSAMKind
  1072. will return all CSAM catalogs. kDirAllKinds will get both ADAP & CSAM catalogs.
  1073. A specific signature (e.g. X.500) may be used to get catalogs with an X.500 signature.
  1074. The information for each catalog returned will have directoryName, discriminator and features.
  1075.  
  1076. If the user receives 'noErr' or 'kOCEMoreData', the buffer will contain valid results. A user
  1077. can extract the results in the 'getBuffer' by making an DirEnumerateDirectories call.
  1078.  
  1079. If 'kOCEMoreData' is received, the user can continue enumeration by using the last catalog and
  1080. discriminator as startingDirectoryName and staringDirDiscriminator in the next call.
  1081.  
  1082. If 'includeStartingPoint' is true and a starting point is specified,
  1083. the staring point will be returned in the result. If false, it is not included.
  1084. */
  1085. typedef SOMLargeStruct            DirEnumerateDirectoriesGetPB; /* Derived from a struct of 106 bytes in size */
  1086.  
  1087. typedef OpaquePtr ForEachDirectoryProcPtr;
  1088. typedef OpaquePtr ForEachDirectoryUPP;
  1089. typedef ForEachDirectoryUPP        ForEachDirectory;
  1090.  
  1091. /*
  1092. EnumerateDirectoriesParse:
  1093. The catalog info returned in 'getBuffer' from the EnumerateDirectoriesGet call
  1094. can be extracted using the EnumerateDirectoriesParse call. 'eachDirectory' will
  1095. be called for each catalog.
  1096.  
  1097. Returning true from any call-back will terminate the EnumerateDirectoriesParse call.
  1098.  
  1099. For synchronous calls, the call-back routine actually runs as part of the same thread
  1100. of execution as the thread that made the EnumerateDirectoriesParse call.  That means that the
  1101. same low-memory globals, A5, stack, etc. are in effect during the call-back
  1102. that were in effect when the call was made.  Because of this, the call-back
  1103. routine has the same restrictions as the caller of EnumerateDirectoriesParse:
  1104. if EnumerateDirectoriesParse was not called from interrupt level, then the call-
  1105. back routine can allocate memory. For asynchronous calls, call-back routine is
  1106. like a ioCompletion except that A5 will be preserved for the application.
  1107.  
  1108. eachDirectory will be called each time to return to the client a
  1109. DirectoryName, DirDiscriminator, and features for that catalog.
  1110. */
  1111. typedef SOMLargeStruct            DirEnumerateDirectoriesParsePB; /* Derived from a struct of 106 bytes in size */
  1112.  
  1113. /*
  1114. The Following five call are specific to ADAP Catalogs. Toolbox
  1115. remembers a list of catalogs across boots. If any catalog service
  1116. call is intended for a ADAP catalog, then it must be in the list.
  1117. In order for managing this list, A client (Probably DE will use these
  1118. calls.
  1119. DirAddADAPDirectoryPB: Add a new ADAP catalog to the list.
  1120. DirRemoveADAPDirectory: Remove a ADAP catalog from the list.
  1121. DirNetSearchADAPDirectoriesGet:   search an internet for adas catalogs.
  1122. DirNetSearchADAPDirectoriesParse: extract the results obtained NetSearchADAPDirectoriesGet.
  1123. DirFindADAPDirectoryByNetSearch: Find a specified catalog through net search.
  1124. */
  1125. /*
  1126. NetSearchADAPDirectoriesGet:
  1127. This call can be used to make a network wide search for finding ADAP catalogs.
  1128. This call will be supported only by 'ADAP' and involve highly expensive
  1129. network operations, so the user is advised to use utmost discretion before
  1130. making this call. The results will be collected in the 'getbuffer' and can be
  1131. extracted using NetSearchADAPDirectoriesParse call. The directoryName,
  1132. the directoryDiscriminator, features and serverHint (AppleTalk address for
  1133. a PathFinder serving that catalog) are collected for each catalog found
  1134. on the network. If buffer is too small to hold all the catalogs found on
  1135. the network, a 'kOCEMoreData' error will be returned.
  1136. */
  1137. typedef SOMLargeStruct            DirNetSearchADAPDirectoriesGetPB; /* Derived from a struct of 74 bytes in size */
  1138.  
  1139. typedef OpaquePtr ForEachADAPDirectoryProcPtr;
  1140. typedef OpaquePtr ForEachADAPDirectoryUPP;
  1141. typedef ForEachADAPDirectoryUPP ForEachADAPDirectory;
  1142.  
  1143. /*
  1144. DirNetSearchADAPDirectoriesParse:
  1145. This call can be used to extract the results obtained in the 'getBuffer'.
  1146. The directoryName, directoryDiscriminator, features and
  1147. serverHint (AppleTalk address for a PathFinder serving that catalog) are
  1148. returned in each call-back. These values may be used to make an
  1149. AddADAPDirectory call.
  1150.  
  1151. Returning TRUE from any call-back will terminate the NetSearchADAPDirectoriesParse request.
  1152.  
  1153. For synchronous calls, the call-back routine actually runs as part of the same thread
  1154. of execution as the thread that made the DirNetSearchADAPDirectoriesParse call. That means that the
  1155. same low-memory globals, A5, stack, etc. are in effect during the call-back
  1156. that were in effect when the call was made.  Because of this, the call-back
  1157. routine has the same restrictions as the caller of DirNetSearchADAPDirectoriesParse:
  1158. if DirNetSearchADAPDirectoriesParse was not called from interrupt level, then the call-
  1159. back routine can allocate memory. For asynchronous calls, call-back routine is
  1160. like a ioCompletion except that A5 will be preserved for the application.
  1161. */
  1162. typedef SOMLargeStruct            DirNetSearchADAPDirectoriesParsePB; /* Derived from a struct of 74 bytes in size */
  1163.  
  1164. /*
  1165. DirFindADAPDirectoryByNetSearch:
  1166. This call can be used to make a network wide search to find an ADAP catalog.
  1167. This call will be supported only by 'ADAP' and involves highly expensive
  1168. network operations, so the user is advised to use utmost discretion before
  1169. making this call. The catalog is specified using directoryName and discriminator.
  1170. If 'addToOCESetup' is true, the catalog will be automatically added to the setup
  1171. list and will be visible through the EnumerateDirectories call and also
  1172. also a creationID to the directoryRecord will be returned.
  1173. If this parameter is set to 'false', the catalog will be added to temporary list
  1174. and will be available for making other catalog service calls. The catalogs
  1175. which are not in the preference catalog list will not be visible through the
  1176. EnumerateDirectories call.
  1177. */
  1178. typedef SOMLargeStruct            DirFindADAPDirectoryByNetSearchPB; /* Derived from a struct of 84 bytes in size */
  1179.  
  1180. /*
  1181. DirAddADAPDirectory:
  1182. The catalog specified by 'directoryName' and 'discriminator' will be
  1183. added to the list of catalogs maintained by the Toolbox. Once added,
  1184. the catalog is available across boots, until the catalog is removed
  1185. explicitly through a DirRemoveADAPDirectory call.
  1186. If 'serverHint' is not nil, the address provided will be used
  1187. to contact a PathFinder for the catalog specified.
  1188. If 'serverHint' is nil or does not point to a valid PathFinder server
  1189. for that catalog, this call will fail.
  1190. If 'addToOCESetup' is true, the catalog will be automatically added to the setup
  1191. catalog list and will be visible through EnumerateDirectories calls and
  1192. also a creationID to the directoryRecord will be returned.
  1193. If this parameter is set to 'false', catalog will be added to temprary list
  1194. and will be available for making other catalog service calls. The catalogs
  1195. which are not in the setup  list will not be visible through
  1196. EnumerateDirectories call.
  1197. */
  1198. typedef SOMLargeStruct            DirAddADAPDirectoryPB;        /* Derived from a struct of 84 bytes in size */
  1199.  
  1200. /*
  1201. GetDirectoryInfo:
  1202. DirGetDirectoryInfo will do:
  1203.  
  1204. If a 'dsRefNum' is non-Zero, the catalog information for
  1205.     the corresponding  PAB will be  returned.
  1206.  If 'dsRefNum' is zero and 'serverHint' is non-zero, If the
  1207.  'serverHint' points to a valid ADAP Catalog Server(Path Finder),
  1208.  the catalog information (i.e. directoryName, discriminator, features)
  1209.  for that catalog will be returned.
  1210.     If a  valid catalog name and discriminator are provided
  1211.     features (Set of capability flags) for that catalog will be returned.
  1212. */
  1213. typedef SOMLargeStruct            DirGetDirectoryInfoPB;        /* Derived from a struct of 78 bytes in size */
  1214.  
  1215. /*
  1216.  * Note on Access Controls:
  1217.  * Access control is based on a list model.
  1218.  * You can get access controls list which gives dsObject and accMask for each dsObject.
  1219.  * GetAccessControl can be limited to currently supplied identity by setting forCurrentUserOnly.
  1220.  * There are special DSObjects are defined in ADASTypes.h for each of the category
  1221.  * supported in ADAS Catalogs. (kOwner, kFriends, kAuthenticatedToCluster, 
  1222.  * kAuthenticatedToDirectory, kGuest) and DUGetActlDSSpec call can be used
  1223.  * to obtain appropraiate DSSpec before making set calls to ADAS catalogs.
  1224.  *
  1225. */
  1226. /*
  1227.     GetDNodeAccessControlGet:
  1228.     This call can be done to get back access control list for a DNode.
  1229.     pRLI -> RLI of the DNode whose access control list is sought
  1230.     curUserAccMask -> If this is 'true', Access controls for the user specified by
  1231.                       the identity parameter will be returned other wise entire list
  1232.                       will be returned.
  1233.     startingDsObj  -> If this is not nil, list should be started after this object.
  1234.     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  1235.                               results.
  1236.                               
  1237.     The results will be collected in the 'getBuffer' supplied by the user.
  1238.     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  1239.      
  1240.     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  1241.     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  1242.     
  1243.     Results returned for each DSObject will contain DSSpecPtr and three sets of access mask. 
  1244.  
  1245. */
  1246. typedef SOMLargeStruct            DirGetDNodeAccessControlGetPB; /* Derived from a struct of 98 bytes in size */
  1247.  
  1248. /* The Access Control call-back function is defined as follows: */
  1249. typedef OpaquePtr ForEachDNodeAccessControlProcPtr;
  1250. typedef OpaquePtr ForEachDNodeAccessControlUPP;
  1251. typedef ForEachDNodeAccessControlUPP ForEachDNodeAccessControl;
  1252.  
  1253. /*
  1254.     GetDNodeAccessControlParse:
  1255.     After an GetDNodeAccessControlGet call has completed, 
  1256.     call GetDNodeAccessControlParse to parse through the buffer that
  1257.     that was filled in GetDNodeAccessControlGet.
  1258.     
  1259.     'eachObject' will be called each time to return to the client a
  1260.     DsObject and a set of three accMasks (three long words) for that object.
  1261.     Acceesmasks returned apply to the dsObject in the callback :
  1262.     1. Currently Active Access mask for the specified DNode.
  1263.     2. Default Access mask for any Record in the DNode
  1264.     3. Default Access mask for any Attribute in the DNode
  1265.     The clientData parameter that you pass in the parameter block will be passed
  1266.     to 'eachObject'.  You are free to put anything in clientData - it is intended
  1267.     to allow you some way to match the call-back to the original call (for
  1268.     example, you make more then one aysynchronous GetDNodeAccessControlGet calls and you want to
  1269.     associate returned results in some way).
  1270.     
  1271.     The client should return FALSE from 'eachObject' to continue
  1272.     processing of the GetDNodeAccessControlParse request.  Returning TRUE will
  1273.     terminate the GetDNodeAccessControlParse request.
  1274.  
  1275.     For synchronous calls, the call-back routine actually runs as part of the same thread 
  1276.     of execution as the thread that made the GetDNodeAccessControlParse call.  That means that the
  1277.     same low-memory globals, A5, stack, etc. are in effect during the call-back
  1278.     that were in effect when the call was made.  Because of this, the call-back
  1279.     routine has the same restrictions as the caller of GetDNodeAccessControlParse:
  1280.     if GetDNodeAccessControlParse was not called from interrupt level, then the call-
  1281.     back routine can allocate memory. For asynchronous calls, call-back routine is
  1282.     like a ioCompletion except that A5 will be preserved for the application.
  1283.  
  1284.  
  1285. */
  1286. typedef SOMLargeStruct            DirGetDNodeAccessControlParsePB; /* Derived from a struct of 98 bytes in size */
  1287.  
  1288. /*
  1289.     GetRecordAccessControlGet:
  1290.     This call can be done to get back access control list for a RecordID.
  1291.     aRecord -> RecordID to which access control list is sought
  1292.     curUserAccMask -> If this is 'true', Access controls for the user specified by
  1293.                       the identity parameter will be returned other wise entire list
  1294.                       will be returned.
  1295.     startingDsObj  -> If this is not nil, list should be started after this object.
  1296.     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  1297.                               results.
  1298.                               
  1299.     The results will be collected in the 'getBuffer' supplied by the user.
  1300.     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  1301.      
  1302.     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  1303.     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  1304.     
  1305.     Results returned for each DSObject will contain DSSpecPtr and accMask. 
  1306.  
  1307. */
  1308. typedef SOMLargeStruct            DirGetRecordAccessControlGetPB; /* Derived from a struct of 98 bytes in size */
  1309.  
  1310. /* The Access Control call-back function is defined as follows: */
  1311. typedef OpaquePtr ForEachRecordAccessControlProcPtr;
  1312. typedef OpaquePtr ForEachRecordAccessControlUPP;
  1313. typedef ForEachRecordAccessControlUPP ForEachRecordAccessControl;
  1314.  
  1315. /*
  1316.     GetRecordAccessControlParse:
  1317.     After an GetRecordAccessControlGet call has completed, 
  1318.     call GetRecordAccessControlParse to parse through the buffer that
  1319.     that was filled in GetRecordAccessControlGet.
  1320.     
  1321.     'eachObject' will be called each time to return to the client a
  1322.     DsObject and a set of three accMasks (three long words) for that object.
  1323.     Acceesmasks returned apply to the dsObject in the callback :
  1324.     1. Active Access mask for the DNode Containing the Record.
  1325.     2. Active Access mask for the Record specified.
  1326.     3. Defualt Access mask for Attributes in the record.
  1327.     The clientData parameter that you pass in the parameter block will be passed
  1328.     to 'eachObject'.  You are free to put anything in clientData - it is intended
  1329.     to allow you some way to match the call-back to the original call (for
  1330.     example, you make more then one aysynchronous GetRecordAccessControlGet calls and you want to
  1331.     associate returned results in some way).
  1332.     
  1333.     The client should return FALSE from 'eachObject' to continue
  1334.     processing of the GetRecordAccessControlParse request.  Returning TRUE will
  1335.     terminate the GetRecordAccessControlParse request.
  1336.  
  1337.     For synchronous calls, the call-back routine actually runs as part of the same thread 
  1338.     of execution as the thread that made the GetRecordAccessControlParse call.  That means that the
  1339.     same low-memory globals, A5, stack, etc. are in effect during the call-back
  1340.     that were in effect when the call was made.  Because of this, the call-back
  1341.     routine has the same restrictions as the caller of GetRecordAccessControlParse:
  1342.     if GetRecordAccessControlParse was not called from interrupt level, then the call-
  1343.     back routine can allocate memory. For asynchronous calls, call-back routine is
  1344.     like a ioCompletion except that A5 will be preserved for the application.
  1345.  
  1346.  
  1347. */
  1348. typedef SOMLargeStruct            DirGetRecordAccessControlParsePB; /* Derived from a struct of 98 bytes in size */
  1349.  
  1350. /*
  1351.     GetAttributeAccessControlGet:
  1352.     This call can be done to get back access control list for a attributeType with in a RecordID.
  1353.     aRecord -> RecordID to which access control list is sought
  1354.     aType    -> Attribute Type to which access controls are sought
  1355.     curUserAccMask -> If this is 'true', Access controls for the user specified by
  1356.                       the identity parameter will be returned other wise entire list
  1357.                       will be returned.
  1358.     startingDsObj  -> If this is not nil, list should be started after this object.
  1359.     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  1360.                               results.
  1361.                               
  1362.     The results will be collected in the 'getBuffer' supplied by the user.
  1363.     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  1364.      
  1365.     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  1366.     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  1367.     
  1368.     Results returned for each DSObject will contain DSSpecPtr and accMask. 
  1369.  
  1370. */
  1371. typedef SOMLargeStruct            DirGetAttributeAccessControlGetPB; /* Derived from a struct of 98 bytes in size */
  1372.  
  1373. /* The Access Control call-back function is defined as follows: */
  1374. typedef OpaquePtr ForEachAttributeAccessControlProcPtr;
  1375. typedef OpaquePtr ForEachAttributeAccessControlUPP;
  1376. typedef ForEachAttributeAccessControlUPP ForEachAttributeAccessControl;
  1377.  
  1378. /*
  1379.     GetAttributeAccessControlParse:
  1380.     After an GetAttributeAccessControlGet call has completed, 
  1381.     call GetAttributeAccessControlParse to parse through the buffer that
  1382.     that was filled in GetAttributeAccessControlGet.
  1383.     
  1384.     'eachObject' will be called each time to return to the client a
  1385.     DsObject and a set of three accMasks (three long words) for that object.
  1386.     Acceesmasks returned apply to the dsObject in the callback :
  1387.     1. Active Access mask for the DNode Containing the Attribute.
  1388.     2. Active Access mask for the Record in the Containing the Attribute.
  1389.     3. Active Access mask for the specified Attribute.
  1390.     The clientData parameter that you pass in the parameter block will be passed
  1391.     to 'eachObject'.  You are free to put anything in clientData - it is intended
  1392.     to allow you some way to match the call-back to the original call (for
  1393.     example, you make more then one aysynchronous GetAttributeAccessControlGet calls and you want to
  1394.     associate returned results in some way).
  1395.     
  1396.     The client should return FALSE from 'eachObject' to continue
  1397.     processing of the GetAttributeAccessControlParse request.  Returning TRUE will
  1398.     terminate the GetAttributeAccessControlParse request.
  1399.  
  1400.     For synchronous calls, the call-back routine actually runs as part of the same thread 
  1401.     of execution as the thread that made the GetAttributeAccessControlParse call.  That means that the
  1402.     same low-memory globals, A5, stack, etc. are in effect during the call-back
  1403.     that were in effect when the call was made.  Because of this, the call-back
  1404.     routine has the same restrictions as the caller of GetAttributeAccessControlParse:
  1405.     if GetAttributeAccessControlParse was not called from interrupt level, then the call-
  1406.     back routine can allocate memory. For asynchronous calls, call-back routine is
  1407.     like a ioCompletion except that A5 will be preserved for the application.
  1408.  
  1409.  
  1410. */
  1411. typedef SOMLargeStruct            DirGetAttributeAccessControlParsePB; /* Derived from a struct of 98 bytes in size */
  1412.  
  1413. /*
  1414. MapPathNameToDNodeNumber:
  1415. This call maps a given PathName within a catalog to its DNodeNumber.
  1416. */
  1417. typedef SOMLargeStruct            DirMapPathNameToDNodeNumberPB; /* Derived from a struct of 82 bytes in size */
  1418.  
  1419. /*
  1420. PathName in the path field will be mapped to the cooresponding dNodeNumber and
  1421. returned in the DNodeNumber field. directoryName and descriminator Fields are
  1422. ignored. DSRefNum is used to identify the catalog.
  1423. */
  1424. /*
  1425. MapDNodeNumberToPathName:
  1426. This call will map a given DNodeNumber with in a catalog to the
  1427. corresponding PathName.
  1428. */
  1429. typedef SOMLargeStruct            DirMapDNodeNumberToPathNamePB; /* Derived from a struct of 84 bytes in size */
  1430.  
  1431. /*
  1432. dNodeNumber in the DNodeNumber field will be mapped to the cooresponding
  1433. pathName and returned in the PackedPathName field.
  1434. lengthOfPathName is to be set the length of pathName structure.
  1435. If length of PackedPathName is larger then the lengthOfPathName, kOCEMoreData
  1436. OSErr will be returned.
  1437. */
  1438. /*
  1439. GetLocalNetworkSpec:
  1440. This call will return the Local NetworkSpec. Client should supply
  1441. an RString big enough to hold the NetworkSpec.
  1442. */
  1443. typedef SOMLargeStruct            DirGetLocalNetworkSpecPB;    /* Derived from a struct of 78 bytes in size */
  1444.  
  1445. /*
  1446. PathName in the path field must be set to nil. internetName should be large
  1447. enough to hold the internetName. InterNetname returned indicates path finder's
  1448. local internet (configured by administrator).
  1449. */
  1450. /*
  1451. GetDNodeInfo:
  1452. This call will return the information (internetName and descriptor)
  1453. for the given RLI of a DNode.
  1454. */
  1455. typedef SOMLargeStruct            DirGetDNodeInfoPB;            /* Derived from a struct of 74 bytes in size */
  1456.  
  1457. /*
  1458. If DnodeNumber is set to a non zero value, path should be set to nil.
  1459. if DnodeNumber is set to zero, pathName should point to a packed path name.
  1460. internetName should be large enough to hold
  1461. the internetName. (If the internetName is same as the one got by
  1462. GetLocalInternetName call, it indicates cluster is reachable  without
  1463. forwarders, --> Tell me if I am wrong)
  1464. */
  1465. /*
  1466. DirCreatePersonalDirectory:
  1467. A new  personal catalog can be created by specifying an FSSpec for
  1468. the file. If a file already exists dupFNErr will be returned. This call is
  1469. supported 'synchronous' mode only.
  1470. */
  1471. typedef SOMLargeStruct            DirCreatePersonalDirectoryPB; /* Derived from a struct of 74 bytes in size */
  1472.  
  1473. /*
  1474. DirOpenPersonalDirectory:
  1475. An existing personal catalog can be opened using this call.
  1476. User can specify the personal catalog by FSSpec for the AddressBook file.
  1477. 'accessRequested' field specifies open permissions. 'fsRdPerm'  & 'fsRdWrPerm'
  1478. are the only accepted open modes for the address book.
  1479. When the call completes successfully, a dsRefNum will be returned. The 'dsRefNum'
  1480. field is in the DSParamBlockHeader. In addittion 'accessGranted' indicates
  1481. actual permission with personal catalog is opened and 'features' indicate the capabilty flags
  1482. associated with the personal catalog.
  1483. This call is supported 'synchronous' mode only.
  1484. */
  1485. typedef SOMLargeStruct            DirOpenPersonalDirectoryPB;    /* Derived from a struct of 72 bytes in size */
  1486.  
  1487. /*
  1488. DirClosePersonalDirectory: This call lets a client close AddressBook opened by DirOpenPersonalDirectory.
  1489. The Personal Catalog specified by the 'dsRefNum' will be closed.
  1490. This call is supported 'synchronous' mode only.
  1491. */
  1492. typedef SOMLargeStruct            DirClosePersonalDirectoryPB; /* Derived from a struct of 62 bytes in size */
  1493.  
  1494. /*
  1495. DirMakePersonalDirectoryRLI: With this call a client can make an RLI
  1496. for a Personal Catalog opened by DirOpenPersonalDirectory Call.
  1497. A packed RLI is created for the Personal Catalog specified by the 'dsRefNum'.
  1498. If a client has a need to make the AddressBook reference to persistent
  1499. acrross boots it should make use of this call. In the current implementaion
  1500. PackedRLI has an embeeded System7.0 'alias'. If in later time
  1501. If client has a need to make reference to the AddressBook, it must use
  1502. ADAPLibrary call 'DUExtractAlias' and resole the 'alias' to 'FSSpec' and
  1503. make DirOpenPersonalDirectory call to get a 'dsRefNum'.
  1504.   'fromFSSpec'            FSPecPtr from which relative alias to be created. If nil,
  1505.                         absolute alias is created.
  1506.  'pRLIBufferSize' indicates the size of buffer pointed by 'pRLI'
  1507.  'pRLISize'    indicates the actual length of 'pRLI'. If the call
  1508.                         fails with 'kOCEMoreData' error a client can reissue
  1509.                     this call with a larger buffer of this length.
  1510.   'pRLI' is pointer to the buffer in which 'PackedRLI' is
  1511.   returned.
  1512. This call is supported in 'synchronous' mode only.
  1513. */
  1514. typedef SOMLargeStruct            DirMakePersonalDirectoryRLIPB; /* Derived from a struct of 74 bytes in size */
  1515.  
  1516. /*
  1517. ****************************************************************************
  1518. The calls described below apply only for CSAM Drivers:
  1519.  
  1520. The following three calls provide capability to Install/Remove a CSAM at RunTime.
  1521.     DirAddDSAM
  1522.     DirRemoveDSAM
  1523.     DirInstantiateDSAM
  1524.  
  1525. The following two calls provide capability to Install/Remove a CSAM Catalog at RunTime.
  1526.     DirAddDSAMDirectory
  1527.     DirRemoveDirectory
  1528.  
  1529. DirGetDirectoryIcon call is used by clients to get any special icon associated
  1530. with a CSAM catalog.
  1531.  
  1532. ****************************************************************************
  1533. */
  1534. /*
  1535. DirAddDSAM: This call can be used to inorm the availability of a CSAM file
  1536. after discovering the CSAM file.
  1537.     dsamName -> is generic CSAM name e.g. Untitled X.500 directory
  1538.     dsamSignature -> could be generic CSAM kind e.g. 'X500'.
  1539.     fsSpec -> is the FileSpec for the file containing CSAM resources.
  1540. If the call is successfull 'DSAMRecordCID' will be returned. If the
  1541. call returns 'daDSAMRecordCIDExists', record was already there and
  1542. 'dsamRecordCID' will be returned.
  1543. This call can be done only in synchronous mode.
  1544. */
  1545. typedef SOMLargeStruct            DirAddDSAMPB;                /* Derived from a struct of 82 bytes in size */
  1546.  
  1547. /*
  1548. DirInstantiateDSAM: This call should be used by the CSAM driver in response
  1549. Driver Open call to indicate the toolbox about the availability of the CSAM.
  1550.     dsamName -> is generic CSAM name e.g. Untitled X.500 directory
  1551.     dsamKind -> could be generic CSAM kind e.g. 'X500'.
  1552.     dsamData -> pointer to private DSAMData. This will be paased back to the CSAM
  1553.     when the CSAM functions (DSAMDirProc,DSAMDirParseProc, DSAMAuthProc) are called.
  1554.     CSAM should already be setup using DirAddDSAM call.
  1555.     DSAMDirProc -> This procedure will be called when  any catalog service
  1556.     call intended for the CSAM (other then parse calls)
  1557.     DSAMDirParseProc -> This procedure will be called when any of the parse calls
  1558.     are called.
  1559.     DSAMAuthProc -> This procedure will be called when any of the Authentication Calls
  1560.     are made to the CSAM. If the CSAM does not support authentication, this can be nil.
  1561. This call can be done only in synchronous mode.
  1562. */
  1563. typedef OpaquePtr DSAMDirProcPtr;
  1564. typedef OpaquePtr DSAMDirUPP;
  1565. typedef DSAMDirUPP                DSAMDirProc;
  1566.  
  1567. typedef OpaquePtr DSAMDirParseProcPtr;
  1568. typedef OpaquePtr DSAMDirParseUPP;
  1569. typedef DSAMDirParseUPP            DSAMDirParseProc;
  1570.  
  1571. typedef OpaquePtr DSAMAuthProcPtr;
  1572. typedef OpaquePtr DSAMAuthUPP;
  1573. typedef DSAMAuthUPP                DSAMAuthProc;
  1574.  
  1575. typedef SOMLargeStruct            DirInstantiateDSAMPB;        /* Derived from a struct of 86 bytes in size */
  1576.  
  1577. /*
  1578. DirRemoveDSAM: This call can be used to remove  a CSAM file from the OCE Setup.
  1579.     dsamRecordCID -> is the creationID of the CSAM record.
  1580. This call can be made only in synchronous mode.
  1581. */
  1582. typedef SOMLargeStruct            DirRemoveDSAMPB;            /* Derived from a struct of 70 bytes in size */
  1583.  
  1584. /*
  1585. DirAddDSAMDirectory: This call can be used to inorm the availability of a CSAM catalog.
  1586.     dsamRecordCID ->  recordID for the CSAM serving this catalog
  1587.     directoryName ->  name of the catalog
  1588.     discriminator -> discriminator for the catalog
  1589.     directoryRecordCID -> If the call is successful, creationID for the record will
  1590.                             be returned.
  1591. */
  1592. typedef SOMLargeStruct            DirAddDSAMDirectoryPB;        /* Derived from a struct of 94 bytes in size */
  1593.  
  1594. /*
  1595. DirRemoveDirectory: This call can be used to inform the toolbox that
  1596. catalog specified by 'directoryRecordCID'
  1597. */
  1598. typedef SOMLargeStruct            DirRemoveDirectoryPB;        /* Derived from a struct of 70 bytes in size */
  1599.  
  1600. /*
  1601.  * DSGetExtendedDirectoriesInfo::  This call can be used to get
  1602.  * the information of various foreign catalogs supported.
  1603.  * Typically a DE Template  may make this call to create a
  1604.  * Address template or a Gateway may make this call to findout
  1605.  * catalog name space in which MSAM may would support. 
  1606.  * Client will supply a buffer pointed by 'bufferPtr' of size 'bufferLength'. 
  1607.  * When the call completes with 'daMoreData' error, client can examine 'totalEntries'
  1608.  * returned and reissue the call with increaing buffer.
  1609.  * Toolbox will findout the private information of each of the Foreign Catalogs
  1610.  * by polling CSAM's, Gateways, and MnMServers. The Information returned
  1611.  * for each catalog will be packed in the format: 
  1612.  * typedef struct EachDirectoryData {
  1613.  *  PackedRLI                        pRLI;           //  packed RLI for the catalog
  1614.  *  OSType                            entnType;        //  Entn Type
  1615.  *  long                            hasMailSlot;   //  If this catalog has mail slot this will be 1 otherwise zero
  1616.  *    ProtoRString                    RealName;      //  Packed RString for Real Name (padded to even boundary) 
  1617.  *    ProtoRString                    comment;       //  Packed RString holding any comment for Display (padded to even boundary)
  1618.  *    long                            length;        //  data length
  1619.  *    char                            data[length];  //  data padded to even boundary
  1620.  * };
  1621.  *
  1622.  *
  1623.  *
  1624.  * typedef struct myData {
  1625.  *      EachDirectoryData    data[numberOfEntries];    // data packed in the above format
  1626.  *    };
  1627.  *
  1628. */
  1629. typedef SOMLargeStruct            DirGetExtendedDirectoriesInfoPB; /* Derived from a struct of 78 bytes in size */
  1630.  
  1631. /*
  1632. DirGetDirectoryIconPB: With this call a client can find out about
  1633. the icons supported by the Catalog.
  1634. Both ADAP and Personal Catalog will not support this call for now.
  1635. A CSAM can support a call so that DE Extension can use this
  1636. call to find appropriate Icons.
  1637.  
  1638. Returns kOCEBufferTooSmall if icon is too small, but will update iconSize.
  1639. */
  1640. typedef SOMLargeStruct            DirGetDirectoryIconPB;        /* Derived from a struct of 78 bytes in size */
  1641.  
  1642. /*
  1643. DirGetOCESetupRefNum: This call will return 'dsRefnum' for the OCE Setup Personal Catalog
  1644. and oceSetupRecordCID for the oceSetup Record.
  1645. Clients interested in manipulating OCE Setup Personal Catalog directly should
  1646. make this call to get 'dsRefNum'.
  1647. 'dsRefNum' will be returned in the standard field in the DirParamHeader.
  1648. */
  1649. typedef SOMLargeStruct            DirGetOCESetupRefNumPB;        /* Derived from a struct of 70 bytes in size */
  1650.  
  1651. /*****************************************************************************/
  1652. /* Catalog and Authentication control blocks and operation definitions */
  1653. typedef SOMLargeStruct            AuthParamBlock;                /* Derived from a struct of 2232 bytes in size */
  1654.  
  1655. typedef SOMLargeStruct            DirParamBlock;                /* Derived from a struct of 4946 bytes in size */
  1656.  
  1657. /* Local Identity API */
  1658. /*  Trap Dispatchers for Personal Catalog and CSAM Extensions */
  1659. #endif
  1660.  
  1661. #endif /* __SOMIDL__ */
  1662.  
  1663. #endif /* __OCEAUTHDIR_IDL__ */
  1664.  
  1665.